Electron 应用上架 App Store(打包 & 签名 & 上传)
概述
本节演示 Electron 应用上架 macOS App Store 的完整打包流程,包括构建、签名和上传。使用 electron-builder 自动签名,通过 Transporter 工具上传 PKG 文件到 App Store Connect。
打包前准备
# 1. 清理旧的构建产物
rm -rf dist/
# 2. 切换 Node.js 版本(建议 Node 16+)
nvm use 16
# 3. 确认 electron-builder 配置正确
bash
MAS 打包
构建命令
npm run compile:mas
bash
打包过程
构建前端代码 → 编译主进程代码 → 签名应用 → 打包 MAS 产物
text
electron-builder 自动签名
electron-builder 会自动查找本地证书进行签名:
// electron-builder 自动匹配逻辑
{
"mac": {
"target": "mas",
"identity": null // 不指定时自动查找
}
}
json
重要提示:本地只保留一个开发者证书时,electron-builder 会自动匹配。若存在多个证书,需显式指定 identity。
产出物
dist/mas/
├── MyApp.app # 签名后的应用
└── MyApp.pkg # 用于上传到 App Store 的安装包
text
上传到 App Store
使用 Transporter
- 打开 Transporter 应用(Mac App Store 免费下载)
- 点击 "+" 按钮选择
.pkg文件 - 等待验证通过
- 点击"交付"上传
Transporter
┌──────────────────────────────────┐
│ [+] 添加应用 │
│ │
│ MyApp.pkg │
│ 状态: 已验证 ✓ │
│ │
│ [交付] 上传到 App Store Connect │
└──────────────────────────────────┘
text
签名方案对比
| 方案 | 工具 | 优点 | 缺点 |
|---|---|---|---|
| 自动签名 | electron-builder | 配置简单,自动匹配证书 | 多证书时需手动指定 |
| 手动签名 | electron-osx-sign | 精细控制 | 流程复杂,容易出错 |
推荐使用 electron-builder 自动签名,避免手动签名带来的各种问题。
常见问题
问题一:MAS 和 DMG 证书混用
❌ 在同一个 target 配置中同时包含 mas 和 dmg
✅ 分开配置 mas 和 dmg 的构建命令
text
MAS 和 DMG 使用不同的签名证书:
| 构建类型 | 使用的证书 |
|---|---|
| MAS | 3rd Party Mac Developer Application |
| DMG | Developer ID Application |
问题二:打包失败
- 检查证书是否过期
- 确认 Provisioning Profile 与 Bundle ID 匹配
- 确保
entitlements文件路径正确
关键要点
- 使用
npm run compile:mas构建 MAS 版本,产物在dist/mas/目录 electron-builder自动签名远比手动签名(electron-osx-sign)简单可靠- PKG 文件通过 Transporter 上传到 App Store Connect
- MAS 和 DMG 的构建配置必须分离,使用不同的证书
- 签名完成后检查输出目录中是否有
.app和.pkg两个文件
↑